Chapter 4
 Conceptual Foundations
 t Visual Programming
 t Object-oriented Programming
 t Dataflow Programming
 t User-interface Development Systems
 t References

In the Grand Tour chapters you built methods and classes in the Prograph language and used Application Builder to develop a Prograph application. This chapter adds to your hands-on experience with a brief overview of the ideas on which Prograph is based. In this chapter you:

q survey the field of visual programming, exploring what programming visually means

q become familiar with basic concepts and terminology of object-oriented programming 

q compare the advantages and disadvantages of dataflow and von Neumann programming models 

q consider the importance of providing developers with a user-interface toolkit

As a development system, Prograph taps directly into a person’s problem-solving skills. It is designed to make use of an individual’s facilities of visual, intuitive, and interactive thinking. As a programming language, Prograph is also powerful enough—as a very high-level language—for professional programmers, yet accessible and friendly to the nonprogramming professional as well. 

Prograph combines three emerging fields in computer science—visual programming, object-oriented programming, and dataflow programming—along with a full application builder toolkit. To understand the power provided by just such a combination, this chapter takes you on a short detour into the conceptual foundations underlying the Prograph language. With this information as background, you will be prepared to get the most out of Part 2, “Tutorials” in this manual and out of the Reference manual.

Note on text references.  Within Chapter 4, there are a number of standard references to other works.  All references are at the end of Chapter 4, at the end of section 4-4.  
.
t
Visual Programming

*875**1152*Visual programming—the use of graphical representations in the process of programming—is a grand departure from traditional programming. It is not dependent on linguistic ability or limited by the user’s knowledge of verbal syntax. Visual programming involves nonverbal, visual information that is recognized and understood in a single, simultaneous process.

 What Is Visual Programming?

Although visually oriented programming is gaining widespread interest, there is currently no clear consensus as to what is meant by the term “visual programming.” Visual languages and visual environments are both included in the visual programming category. And software labelled as visual programming can actually be something else altogether.

For some, the overlapping windows of today’s graphical editors qualify as visual programming. For others, there must be some meaningful graphical representation used in the programming process itself.1 

It is no wonder that programmers get a little confused. When a programming system claims to do visual programming, it is wise to look very closely to see just how visual the system really is.

 Is It a Visual Environment?

*1148*Visual environments use pointing devices or graphical techniques, or both, for visually capturing what is going on in a program, in a database, or in the software design itself. The programs underlying visual environments are themselves written in traditional *871*text-based programming languages. *1077*

In a visually oriented database, data are directly manipulated using joysticks or mouse clicks instead of keyword commands. Graph*398* structures — networks of nodes connected by arcs — are used to show global or local relationships in the data.2  Users can browse the database to locate information they need.

Visual environments are also used in database design*234* itself—a visual database schema. Graph structures here show different types of data relationships than those expected by the record structure of traditional relational, hierarchical, and network database models. By seeing relationships in the data by means of tree structures and networks rather than in tables and records, users begin to formulate database queries they may not have thought of when using only traditional database environments.3

The use of visual environments to facilitate linguistic programming  *860**512* is also included in what is called visual programming. In some systems, flowcharts*382* and diagrams are available to enhance program comprehension. In others, program source code can be “pretty printed” into a graphically elegant format to make the program more readable. But in such systems, these pre- and post-presentation aspects of traditional programming are not directly involved with the programming task itself.

For developing the actual program, many interactive programming environments support a multiple-window*744* system for visualizing the program and its execution states. Other systems provide visual *1153* syntax editors for designing and refining program data structures.

However, a multiple-windowing system, by itself, should not be confused with visual programming. In some systems, the window views have nothing to do with the programming task, or if they do, the windows do not contain visual expressions or graphical elements other than the window.

In essence, many different visual environment systems are lumped together into what some call visual programming. In reality, they are visualizations of traditional programming tasks, not visual programming per se. 

Prograph’s Execution, Case, and Stack windows let you view the state of your program as it executes.

A highly visual programming system has multiple windows for viewing program-execution states, visual syntax editors for designing program data structures, and graphical expressions in the windows themselves. As you have already seen in the Grand Tour, Prograph is just such a highly visual programming environment. 

 Is It a Visual Language?*1151*

*1150*Unlike visual environments that focus solely on user interaction, visual languages are programming languages that use graphical information such as diagrams, icons, or tables in the actual process of programming.

Some languages that are often included in the visual-language category are only designed to handle visual information*1149*. Others only support visual interaction. Truly visual programming languages are intimately tied to visual expressions. Their program meaning is as bound to their visual representation as a *872*text-based language is tied to its syntax.

Although generally classified as visual, languages for processing visual information are themselves text-based programming*1078* languages.4  The information they handle and the results they present—pictures, images, maps, and so on—are graphical, but the actual programming is done in a traditional language.

Some languages are specifically designed to support visual representations or visual interactions.5  Such languages are used to define icons—shape, color, location, and so on—or to support operations on icons. In general, these too are text-based languages.

Languages more realistically labelled as visual programming languages actually use pictures, icons, graphs, or diagrams as components of the language. Based on their design principles, these truly visual programming languages fit into three general categories. But the categories are not clear-cut. They loosely fall along a continuum based on the proportion and type of visual components used for program execution.